package cn.ffcs.bpmpvc.svc;

import java.util.List;

import cn.ffcs.bpmpvc.dao.FlowPvcDao;
import cn.ffcs.bpmpvc.web.views.ProcessInstView;
import cn.ffcs.bpmpvc.web.views.ProcessView;
import cn.ffcs.organ.model.Person;

public interface ProcessPvcService
{
    public static final String INACTIVE_ROOT="inactive-root";
    public static final String ACTIVE_ROOT="active-root";//根节点活动状态
    public static final String ACTIVE_CONCURRENT_ROOT="inactive-concurrent-root";//并发节点状态
    public static final String ACTIVE_JOIN="active-join";//分支节点活动状态
    public static final String INACTIVE_JOIN="inactive-join";//分去节点完成状态
    /**
     * 取得流程初始化信息
     * TODO 请输入方法说明
     * @param processId
     * @return
     */
    public ProcessView getInitProcessInfo(String processId);
    
    /**
     * 取得流程初始化信息
     * @param processId
     * @param nextNodCondition 节点选择条件
     * @param assignCondition 节点人员选择接口参数值
     * @return
     */
    public ProcessView getInitProcessInfo(String processId,String nextNodCondition,Object assignCondition);
    /**
     * 启动流程
     * TODO 请输入方法说明
     * @param processConfigId
     * @param userId
     * @return
     */
    public ProcessInstView startProcessInst(String processConfigId,String userId);
    /**
     * 启动流程，是否提交申请任务
     * TODO 请输入方法说明
     * @param processId
     * @param person
     * @param nextTasksList
     * @param isCommit
     * @return
     */
    public ProcessInstView startProcessInst(String processId, Person person,List<TaskAssignBean> nextTasksList,boolean isCommit);
    /**
     * 启动流程，是否提交申请任务
     * @param processId
     * @param person
     * @param nextTasksList
     * @param isCommit
     * @param startSwimPersonId
     * @return
     */
    public ProcessInstView startProcessInst(String processId, Person person,List<TaskAssignBean> nextTasksList,boolean isCommit,String startSwimPersonId);
    /**
     * 
     * TODO 请输入方法说明
     * @param processConfigId
     * @param user
     * @return
     */
    public ProcessInstView startProcessInst(String processConfigId,Person person);
    
    /**
     * 删除流程
     * TODO 请输入方法说明
     * @param processId
     */
    public void deleteProcessInst(String processInstId);
    
    public ProcessInstView getProcessInstView(Integer procInstId);
    public FlowPvcDao getFlowPvcDao();
}
